#ifndef PHONG_H
#define PHONG_H

#include "Illumination.h"

class Phong : public Illumination
{
private:
	//intensite ambiante entre 0 et 1
	float IAlambda;
	//coefficient ambiant entre 0 et 1
	float ka;

public:
	Phong();
	Phong(float IAlambda, float ka);
	Phong(Phong const& ph);
	~Phong();

	Phong& operator=(Phong const& ph);
	virtual Couleur calculIllumination(std::vector<Source*> src, std::vector<Objet*> objets, Objet* obj, Observateur Obs);
	Couleur calculIlluminationUneSource(Source* src, Objet* obj, Observateur Obs);
	float calculAttenuation(float distance);
	Objet* calculOmbre(Rayon lightRay, std::vector<Objet*> objets, Objet* obj);
	float calculPenombre(Source* source, std::vector<Objet*> objets, Objet* obj);

	void setIAlambda(float Il);
	float getIAlambda();
	void setKa(float k);
	float getKa();
};


#define invsqrtf(x) (1.0f / sqrtf(x))

#endif